package cn.com.headfree.userinfo.service;

import java.util.List;

import cn.com.headfree.entity.*;
import com.gta.edu.sdk.common.dto.Page;

import cn.com.headfree.entity.isc.User;
import cn.com.headfree.vo.DeptIdPathVo;
import cn.com.headfree.vo.EachTypeDetailVo;
import cn.com.headfree.vo.FuturePostVo;
import cn.com.headfree.vo.SysDictionaryInfoVo;
import cn.com.headfree.vo.TEmpBaseInfoVo;
import cn.com.headfree.vo.complex.TAcadeAchiveInfoVo;
import cn.com.headfree.vo.complex.TPatentInfoVo;
import cn.com.headfree.vo.complex.TProjAchieveInfoVo;
import cn.com.headfree.vo.complex.TStandInfoVo;
import cn.com.headfree.vo.complex.TTecInnovInfoVo;
import cn.com.headfree.vo.complex.TTecManInnovVo;

public interface IUserInfoService {

	String addBaseInfo(TEmpBaseInfo baseInfo, User user) throws Exception;

	TEmpBaseInfo getBaseInfoById(String id);

	TEmpBaseInfo getBaseInfoByErpNo(String erpNo);

	String addYearEffect(TYearEffectInfo yearEffectInfo, User user) throws Exception;

	TYearEffectInfo getYearEffectById(String id);

	List<TYearEffectInfo> getYearEffectByErpNo(String erpNo);

	void findPageYearEffectByCondi(Page<TYearEffectInfo> page, TYearEffectInfo tYearEffectInfo);

	String addEducateInfo(TEducateInfo tEducateInfo, User user) throws Exception;

	TEducateInfo getEducateInfoById(String id);

	List<TEducateInfo> getEducateInfoByErpNo(String erpNo, String isCountEduc);

	void findPageEducateInfoByCondi(Page<TEducateInfo> page, TEducateInfo tEducateInfo);

	String addProTecInfo(TProTecInfo tProTecInfo, User user) throws Exception;

	TProTecInfo getProTecInfoById(String id);

	List<TProTecInfo> getProTecInfoByErpNo(String erpNo);

	void findPageProTecInfoByCondi(Page<TProTecInfo> page, TProTecInfo tProTecInfo);

	String addSkillLevelInfo(TSkillLevelInfo tSkillLevelInfo, User user) throws Exception;

	TSkillLevelInfo getSkillLevelInfoById(String id);

	List<TSkillLevelInfo> getSkillLevelInfoByErpNo(String erpNo);

	void findPageSkillLevelInfoByCondi(Page<TSkillLevelInfo> page, TSkillLevelInfo tSkillLevelInfo);

	String addExpertTitleInfo(TExpertTitleInfo tExpertTitleInfo, User user) throws Exception;

	TExpertTitleInfo getExpertTitleInfoById(String id);

	List<TExpertTitleInfo> getExpertTitleInfoByErpNo(String erpNo);

	void findPageExpertTitleInfoByCondi(Page<TExpertTitleInfo> page, TExpertTitleInfo tExpertTitleInfo);

	// 学术成果
	String addAcadeAchiveInfo(TAcadeAchiveInfo tAcadeAchiveInfo, User user) throws Exception;

	TAcadeAchiveInfoVo getAcadeAchiveInfoById(String id);

	TAcadeAchiveInfo getAcadeAchiveInfoByIdForRecord(String id);

	List<TAcadeAchiveInfoVo> getAcadeAchiveInfoByErpNo(String erpNo);

	void findPageAcadeAchiveInfoByCondi(Page<TAcadeAchiveInfoVo> page, TAcadeAchiveInfo tAcadeAchiveInfo);

	// 标准制定
	String addStandInfo(TStandInfo tStandInfo, User user) throws Exception;

	TStandInfoVo getStandInfoById(String id);

	TStandInfo getStandInfoByIdForRecord(String id);

	List<TStandInfoVo> getStandInfoByErpNo(String erpNo);

	void findPageStandInfoByCondi(Page<TStandInfoVo> page, TStandInfo tStandInfo);

	// 专利
	String addPatentInfo(TPatentInfo tPatentInfo, User user) throws Exception;

	TPatentInfoVo getPatentInfoById(String id);

	TPatentInfo getPatentInfoByIdForRecord(String id);

	List<TPatentInfoVo> getPatentInfoByErpNo(String erpNo);

	void findPagePatentInfoByCondi(Page<TPatentInfoVo> page, TPatentInfo tPatentInfo);

	// 技艺革新
	String addTecInnovInfo(TTecInnovInfo tTecInnovInfo, User user) throws Exception;

	TTecInnovInfoVo getTecInnovInfoById(String id);

	TTecInnovInfo getTecInnovInfoByIdForRecord(String id);

	List<TTecInnovInfoVo> getTecInnovInfoByErpNo(String erpNo);

	void findPageTecInnovInfoByCondi(Page<TTecInnovInfoVo> page, TTecInnovInfo tTecInnovInfo);

	String addContestInfo(TContestInfo tContestInfo, User user) throws Exception;

	TContestInfo getContestInfoById(String id);

	List<TContestInfo> getContestInfoByErpNo(String erpNo);

	void findPageContestInfoByCondi(Page<TContestInfo> page, TContestInfo tContestInfo);

	// 科技创新
	String addTecManInnov(TTecManInnov tTecManInnov, User user) throws Exception;

	TTecManInnovVo getTecManInnovById(String id);

	TTecManInnov getTecManInnovByIdForRecord(String id);

	List<TTecManInnovVo> getTecManInnovByErpNo(String erpNo);

	void findPageTecManInnovByCondi(Page<TTecManInnovVo> page, TTecManInnov tTecManInnov);

	String addHonorInfo(THonorInfo tHonorInfo, User user) throws Exception;

	THonorInfo getHonorInfoById(String id);

	List<THonorInfo> getHonnorInfoByErpNo(String erpNo);

	void findPageHonorInfoByCondi(Page<THonorInfo> page, THonorInfo tHonorInfo);

	String addWorkExpInfo(TWorkExpInfo tWorkExpInfo, User user) throws Exception;

	TWorkExpInfo getWorkExpInfoById(String id);

	List<TWorkExpInfo> getWorkExpInfoByErpNo(String erpNo);

	void findPageWorkExpInfoByCondi(Page<TWorkExpInfo> page, TWorkExpInfo tWorkExpInfo);

	String addContiStudyInfo(TContiStudyInfo tContiStudyInfo, User user) throws Exception;

	TContiStudyInfo getContiStudyInfoById(String id);

	List<TContiStudyInfo> getContiStudyInfoByErpNo(String erpNo);

	void findPageContiStudyInfoByCondi(Page<TContiStudyInfo> page, TContiStudyInfo tContiStudyInfo);

	String addSdtTutorPrentInfo(TSdtTutorPrentInfo tSdtTutorPrentInfo, User user) throws Exception;

	TSdtTutorPrentInfo getSdtTutorPrentInfoById(String id);

	List<TSdtTutorPrentInfo> getSdtTutorPrentInfoByErpNo(String erpNo);

	void findPageSdtTutorPrentInfoByCondi(Page<TSdtTutorPrentInfo> page, TSdtTutorPrentInfo tSdtTutorPrentInfo);

	// 项目课题成果
	String addProjAchieveInfo(TProjAchieveInfo tProjAchieveInfo, User user) throws Exception;

	TProjAchieveInfoVo getProjAchieveInfoById(String id);

	TProjAchieveInfo getProjAchieveInfoByIdForRecord(String id);

	List<TProjAchieveInfoVo> getProjAchieveInfoByErpNo(String erpNo);

	void findPageProjAchieveInfoByCondi(Page<TProjAchieveInfoVo> page, TProjAchieveInfo tProjAchieveInfo);

	List<TMouldInfo> getMouldInfoList(TMouldInfo tMouldInfo);

	void getEachTypeDetailList(EachTypeDetailVo detail, Page<EachTypeDetailVo> page);

	List<SysDictionaryInfoVo> getAttendanceUserTypeByValue(String value);

	/****************************************
	 * 1.通过数据id判断当前数据是否存在待审核的副本数据
	 * 2.通过数据id判断当前数据是否已经提报薪档
	 ********************************/

	List<TYearEffectInfo> getReadyYearEffectById(String id);

	List<TSalaryBusinessBind> getYearEffectSalaryById(String id);

	List<TEducateInfo> getReadyEducateInfoById(String id);

	List<TSalaryBusinessBind> getEducateInfoSalaryById(String id);

	List<TProTecInfo> getReadyProTecInfoById(String id);

	List<TSalaryBusinessBind> getProTecInfoSalaryById(String id);

	List<TSkillLevelInfo> getReadySkillLevelInfoById(String id);

	List<TSalaryBusinessBind> getSkillLevelSalaryById(String id);

	List<TExpertTitleInfo> getReadyExpertTitleInfoById(String id);

	List<TSalaryBusinessBind> getExpertTitleSalaryById(String id);

	List<TAcadeAchiveInfo> getReadyAcadeAchiveInfoById(String id);

	List<TSalaryBusinessBind> getAcadeAchiveSalaryById(String id);

	List<TStandInfo> getReadyStandInfoById(String id);

	List<TSalaryBusinessBind> getStandInfoSalaryById(String id);

	List<TPatentInfo> getReadyPatentInfoById(String id);

	List<TSalaryBusinessBind> getPatentInfoSalaryById(String id);

	List<TTecInnovInfo> getReadyTecInnovInfoById(String id);

	List<TSalaryBusinessBind> getTecInnovInfoSalaryById(String id);

	List<TContestInfo> getReadyContestInfoById(String id);

	List<TSalaryBusinessBind> getContestInfoSalaryById(String id);

	List<TTecManInnov> getReadyTecManInnovById(String id);

	List<TSalaryBusinessBind> getTecManInnovSalaryById(String id);

	List<THonorInfo> getReadyHonorInfoById(String id);

	List<TSalaryBusinessBind> getHonorInfoSalaryById(String id);

	List<TWorkExpInfo> getReadyWorkExpInfoById(String id);

	List<TSalaryBusinessBind> getWorkExpInfoSalaryById(String id);

	List<TContiStudyInfo> getReadyContiStudyInfoById(String id);

	List<TSalaryBusinessBind> getContiStudyInfoSalaryById(String id);

	List<TSdtTutorPrentInfo> getReadySdtTutorPrentInfoById(String id);

	List<TSalaryBusinessBind> getSdtTutorPrentInfoSalaryById(String id);

	List<TProjAchieveInfo> getReadyProjAchieveInfoById(String id);

	List<TSalaryBusinessBind> getProjAchieveInfoSalaryById(String id);

	void addPartRank(List<TPartRank> ranks, String id, String type);

	/**
	 * 参与人员修改
	 */
	void updatePartRankData(String itemId, List<TPartRank> list, String itemType);

	void addSdtPrentInfo(TSdtPrentInfo p);

	/**
	 * 添加挂职轮岗信息
	 *
	 * @author yangwang
	 * @param tRotationInfo
	 * @param user
	 * @return String
	 */
	String addRotationInfo(TRotationInfo tRotationInfo, User user) throws Exception;

	/**
	 * 根据id获取挂职轮岗信息
	 *
	 * @author yangwang
	 * @param id
	 * @return TRotationInfo
	 */
	TRotationInfo getRotationInfoById(String id);

	/**
	 * 获取挂职轮岗列表信息
	 *
	 * @author yangwang
	 * @param tRotationInfo
	 * @return List<TRotationInfo>
	 */
	List<TRotationInfo> getListRotationInfoCondi(TRotationInfo tRotationInfo);

	/**
	 * 获取挂职轮岗分页信息
	 *
	 * @author yangwang
	 * @param page
	 * @param tRotationInfo
	 */
	void findPageRotationInfoByCondi(Page<TRotationInfo> page, TRotationInfo tRotationInfo);

	/**
	 * 获取挂职轮岗待审核信息
	 *
	 * @author yangwang
	 * @param id
	 * @return List<TRotationInfo>
	 */
	List<TRotationInfo> getReadyRotationInfoById(String id);

	List<TSalaryBusinessBind> getRotationInfoSalaryById(String id);

	List<TSdtPrentInfo> getTSdtPrentInfoListById(String id);

	// 徒弟所获奖项添加
	void addSdtAwardInfo(TSdtAward tSdtAward);

	TEmpBaseInfoVo getNowBaseInfoByErpNo(String erpNo);

	FuturePostVo getFuturePostByErpNo(String erpNo);

	void addGrowthPlan(TGrowthPlan tGrowthPlan, User user);

	void findPageGrowthPlanByCondi(Page<TGrowthPlan> page, TGrowthPlan tGrowthPlan);

	TGrowthPlan getGrowthPlanById(String id);

	void updateGrowthPlan(TGrowthPlan tGrowthPlan,User user);

	List<TGrowthPlan> getListByCondition(TGrowthPlan tGrowthPlan, String ids);

	void getPersonalPageGrowthPlanByErpNo(Page<TGrowthPlan> page, String erpNo);

	DeptIdPathVo getDeptIdPathById(String deptId);

	String addEmployeeMobility(TEmployeeMobility tEmployeeMobility, User user);

	void findPageEmployeeMobilityByCondi(Page<TEmployeeMobility> page, TEmployeeMobility tEmployeeMobility);

	void getPersonalPageEmployeeMobilityByErpNo(Page<TEmployeeMobility> page, String erpNo);

	void updateEmployeeMobility(TEmployeeMobility tEmployeeMobility, User user);

	TEmployeeMobility getEmployeeMobilityById(String id);

	List<TEmployeeMobility> getReadyEmployeeMobilityById(String id);

	List<TSalaryBusinessBind> getEmployeeMobilitySalaryById(String id);

	/**
	 * 获取技术标准信息
	 * @author pengmengzhi
	 * @param tecStandardInfo
	 * @return List<TRotationInfo>
	 *  */
	void findPageTecStandardInfoByCondi(Page<TTecStandardInfo> page, TTecStandardInfo tecStandardInfo);

	TTecStandardInfo getTecStandardInfoById(String id);

	// 技术标准
	String addTecStandardInfo(TTecStandardInfo tecStandardInfo, User user) throws Exception;

}
